Notification Center如何運作
Notification Center運作原理,分為三個部分
- "listener"偵聽notificiations,稱作觀察者
- "sender"當事件發生時,通知notifications
- "notification center"追蹤上述兩者
來簡單看一個例子
- 你在一個需要把郵件送到五個不同色彩的街道的郵局工作
- 你是其中一個郵差,當郵局收到信件時,需要把紫色的信件,送到紫色的街道。
- 輪到你值班時,你告訴郵件中心說,你想要知道紫色郵件何時會抵達
- 一段時間後,住在黃色街道的人要寄送一封紫色信件到紫色街道
- 所以他寄了一封信件到郵局。這時通知中心告知紫色郵件抵達。
- 你從通知中心拿到信件後,再將信件送到紫色街道。
這種機制寄件人,跟分寄信的人不需要知道彼此是誰,他們只需要知道通知中心"Notification Center"
此外,Notification Center也可以處理一對多或多對多的事件。
回到實際應用,這圖是Notification Center的流程
上圖說明了什麼
- Component B透過addObserver(_:selector:name:object:)通知Notification Center
- 某事件發生在Component A ,像是資料輸入或是事件完成
- Component A發出通知到Notification Center
- Notification Center透過調用Component B的#selector來吿知Component B觀察到事件已發生
- 當selector被呼叫後,執行Component B的功能
Component A 和 B 可以是任何class,例如View Controller、custom API或是data